home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <string.h>
- #include <netdb.h>
-
-
- int atoet(char *a,char *et)
- {
- int etbuf[6];
- if(sscanf(a,"%2x:%2x:%2x:%2x:%2x:%2x",&etbuf[0],&etbuf[1],&etbuf[2],&etbuf[3],&etbuf[4],&etbuf[5]) == 6)
- {
- et[0] = (char)etbuf[0];
- et[1] = (char)etbuf[1];
- et[2] = (char)etbuf[2];
- et[3] = (char)etbuf[3];
- et[4] = (char)etbuf[4];
- et[5] = (char)etbuf[5];
- return(6);
- }
- return(0);
- }
-
- long atoin(char *a)
- {
- unsigned n1,n2,n3,n4;
-
-
- if(sscanf(a,"%u.%u.%u.%u",&n1,&n2,&n3,&n4) == 4)
- return(((unsigned long)n1<<24) + ((unsigned long)n2<<16) + ((unsigned long)n3<<8) +(unsigned long)n4);
- return(0L);
- }
-
- #ifdef __GETHOSTBYNAME
- long gethostbyname(char *host)
- {
- register FILE *fp;
- register long inet = 0L;
- register char *p;
- char buf[128];
-
-
- if(strchr(host,'.'))
- {
- inet = atoin(host);
- }
- if(inet==0L)
- {
- p = (char *)getnetenv("HOSTS");
- if(p) strcpy(buf,p);
- else buf[0]=0;
- if(!p || p[strlen(p)-1] == '\\') strcat(buf,"hosts");
- if((fp=fopen(buf,"r")) == NULL)
- {
- inet=0L;
- }
- else
- {
- while (!feof(fp))
- {
- fgets(buf,(int)sizeof(buf),fp);
- p=strtok(buf," \t");
- if(!p || *p=='#' || *p=='\n') continue;
- if((inet = atoin(p)) != 0L)
- do
- {
- p=strtok(NULL," \t\n");
- if(p && !strcmp(p,host))
- {
- fclose(fp);
- return(inet);
- }
- }while(p);
- }
- fclose(fp);
- inet = 0L;
- }
- }
- return(inet);
- }
- #endif